/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.modelo.Grupo;
import br.com.foxinline.modelo.Usuario;
import br.com.foxinline.servico.GrupoServico;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.utilitario.Msg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.model.DualListModel;

/**
 *
 * @author ely
 */
@ManagedBean
@ViewScoped
public class ManagerCriarUsuario implements Serializable {

    @EJB
    UsuarioServico userService;
    @EJB
    GrupoServico groupService;
    private Usuario user;
    private String confirm;
    private DualListModel<Grupo> dualGrupo;
    private List<Grupo> gruposSelec;
    private Boolean mensagemLogin;

    @PostConstruct
    public void init() {
        user = new Usuario();
        gruposSelec = new ArrayList<Grupo>();
        List<Grupo> gruposSource = groupService.pesquisarTodos();
        dualGrupo = new DualListModel<Grupo>(gruposSource, gruposSelec);
        mensagemLogin = Boolean.FALSE;
    }

    public void save() {
        try {
            Usuario usuarioLogin = userService.existLogin(user.getLogin());
            if (usuarioLogin == null) {
                user.setGrupos(dualGrupo.getTarget());
                userService.saveUser(confirm, user);
                init();
                Msg.messagemInfo(Msg.SuccessFull);
                mensagemLogin = Boolean.FALSE;
            } else {
                mensagemLogin = Boolean.TRUE;
                Msg.messagemWarn("Login não está disponível");
            }
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public Usuario getUser() {
        return user;
    }

    public void setUser(Usuario user) {
        this.user = user;
    }

    public String getConfirm() {
        return confirm;
    }

    public void setConfirm(String confirm) {
        this.confirm = confirm;
    }

    public DualListModel<Grupo> getDualGrupo() {
//        dualGrupo = new DualListModel<Grupo>(groupService.findAll(), gruposSelec);
        return dualGrupo;
    }

    public void setDualGrupo(DualListModel<Grupo> dualGrupo) {
        this.dualGrupo = dualGrupo;
    }

    public Boolean getMensagemLogin() {
        return mensagemLogin;
    }

    public void setMensagemLogin(Boolean mensagemLogin) {
        this.mensagemLogin = mensagemLogin;
    }
    
    
}
